package Template;

import Utils.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map;

/**
 * - update():执行DML语句。增、删、改语句
 * - queryForMap():查询结果将结果集封装为map集合,将列名作为key，将值作为value将这条记录封装为一个map集合
 * - queryForList():查询结果将结果集封装为list集合
 * - query():查询结果，将结果封装为JavaBean对象
 * - queryForObject:查询结果，将结果封装为对象
 *
 * @author Mc.Chai
 * @program: JavaWeb
 * @create 2021-12-16-21:54 21:54
 */
public class TemplateDemo {
    public static void main(String[] args) {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
        String sql="insert into user values(?,?,?)";
        //update(sql,赋值参数，与sql中？的位置一一对应)
        //int update = jdbcTemplate.update(sql,4,"刘家豪",4000);
        //System.out.println(update);//增删改操作
        String sql2="select * from user where id=?";
        //将查询的结果封装为map集合
        Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql2, 1);
        System.out.println(stringObjectMap);
        /**
         * 查询所有的记录，将其封装为对象的List集合
         * 查询总记录数
         * */
        String sql3="select * from user";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql3);
        for (Map<String, Object> map : maps) {
            System.out.println(map);
        }
        /**
         * 该方式使用默认的方式封装javaBean对象
         * 一般情况下，我们需要在数据库中去除数据，利用get方法给封装的JavaBean对象赋值
         * new BeanPropertyRowMapper<类型>(类型.class)
         * */
        List<User> query = jdbcTemplate.query(sql3, new BeanPropertyRowMapper<User>(User.class));
        for (User user : query) {
            System.out.println(user);
        }
        /**
         * 查询总数
         * */
        String sql4="select count(id) from user";   //返回long类型的数据
        Long integer = jdbcTemplate.queryForObject(sql4, Long.class);
        System.out.println(integer);
    }
}
